/*@author: Ana Rebollo Pin
 * 
 */

package com.bonshotels.DomainLayer.DomainModel;

	/**
	 * Interface EstrategiaCalculPreu.
	 * 
	 * Utilitzem aquesta interface per aplicar el patro estrategia.  
	 * Per evitar l'acoblament directe amb totes les posibles estartegies
	 * i facilitant la canviabilitat. 
	 * Els metodes estaran implemetats a cada una de les subclases. 
	 * Com que utilitzem el framework de persistencia
	 * Hibernate i aquest utilitza reflexio per fer la seva feina hem hagut d d'afegir un getter i
	 * setter a la interficie de manera que el el Hibernate pugui assignar un id diferent a cada
	 * instancia que implementi IEstrategiaCalcul preu. S'ha canviat la estrategia de mapeig per
	 * Class Table Inheritance fent que la interficie tingui una taula amb les id de totes les seves
	 * realitzacions ja que aixi era com ho recoamanava la documentacio de Hibernate i perque la
	 * manera com ho haviem pensat no ens va semblar possible d'implementar amb Hibernate.
	 * http://docs.jboss.org/hibernate/core/3.3/reference/en/html/inheritance.html#inheritance-tablepersubclass 
	 */
public interface IEstrategiaCalculPreu {
	
	long getId();
	
	void setId(long id);
	
	/**
     * Obte el preu final resultant que consisteix en aplicar l'estartegia
     * de preus sobre el preu base que rep com a parametre.
     * @param preu  cost inicial del tipus de la habitacio sobre el qual aplicarem 
     * l'estartegia. 
     * @return el preu final del tipus d'habitacio despres de haver aplicat 
     * l'estrategia que tingui vigent el hotel en el moment de l'execucio. 
     */
	float calcularPreu (float preu);
	
}
